// 使用示例
import EthersUtils from './ethers_utils.js';

// 初始化实例
const utils = new EthersUtils(
    '0xf1e9f7237cc74d87f4e3262c1cb708b9472585a233fe5bc92996b61131b2419e',
    { network: 'holesky' }
);

// 部署ERC20合约
const erc20Source = `// SPDX-License-Identifier: MIT
pragma solidity ^0.8.29;

contract SimpleStorage {
    uint256 storedData;
    
    function set(uint256 x) public {
        storedData = x;
    }
    
    function get() public view returns (uint256) {
        return storedData;
    }
}`;

async function main() {
    try {
        // 部署合约（使用你的示例代码）
        const contract = await utils.deployContract(erc20Source,[],{
            contractName: 'SimpleStorage',
            outputDir: './build'
        });
        const contractAddress = await contract.getAddress();
        console.log('合约地址:', contractAddress);

        // 获取合约实例（两种方式任选）
        // 方式1：直接使用部署返回的实例
        let storageContract = contract;

        // 写入操作（需要发送交易）
        console.log('正在设置存储值...');
        const tx = await storageContract.set(42); // 调用set方法
        await tx.wait(); // 等待交易确认
        console.log('交易已确认，区块:', tx);

        // 读取操作（直接调用）
        const currentValue = await storageContract.get();
        console.log('当前存储值:', currentValue.toString());

    } catch (error) {
        console.error('操作失败:', error);
    }
}

main();